#include "../../lv_examples.h"
#if LV_USE_DROPDOWN && LV_BUILD_EXAMPLES

static void event_handler(lv_event_t * e)
{
    //从事件结构体中获取事件代码。事件代码是一个枚举值，表示发生的事件类型，如 LV_EVENT_VALUE_CHANGED 表示值改变事件。
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * obj = lv_event_get_target(e);
    //如果事件代码是 LV_EVENT_VALUE_CHANGED，则表示值改变了，可以获取当前选中的选项。
    if(code == LV_EVENT_VALUE_CHANGED) {
        char buf[32];
        //获取当前选中的选项，并将其存储在 buf 中。
        lv_dropdown_get_selected_str(obj, buf, sizeof(buf));
        //打印日志，显示当前选中的选项。
        LV_LOG_USER("Option: %s", buf);
    }
}

void lv_example_dropdown_1(void)
{

    /*Create a normal drop down list*/
    //创建一个新的下拉列表对象，并将其父对象设置为当前活动的屏幕。
    lv_obj_t * dd = lv_dropdown_create(lv_scr_act());
    //设置下拉列表对象的选项字符串，包括多个选项，以换行符分隔。
    lv_dropdown_set_options(dd, "Apple\n"
                            "Banana\n"
                            "Orange\n"
                            "Cherry\n"
                            "Grape\n"
                            "Raspberry\n"
                            "Melon\n"
                            "Orange\n"
                            "Lemon\n"
                            "Nuts");

    //设置下拉列表对象的对齐方式，将其放置在屏幕的中央。
    lv_obj_align(dd, LV_ALIGN_TOP_MID, 0, 20);
    //为下拉列表对象添加一个事件回调函数，该函数会在下拉列表的值改变时触发。
    lv_obj_add_event_cb(dd, event_handler, LV_EVENT_ALL, NULL);
}

#endif
